Pular para o conteúdo

[Script Pascal] Verificando quantos Caracteres por Segundo tem a legenda

Seguindo a linha de garimpagem do Pix, estou pesquisando na internet alguns scripts pascal que facilitam nossa vida.

Este gera um relatório dizendo se sua legenda está nos "padrões" de 25 caracteres exibidos em 1 segundo (tempo-limite que a maioria das pessoas leva pra ler a legenda). OBS: o padrão oficial para dvd's comerciais e filmes de cinema é de 13 a 18 cps em média.

Salve este código com o nome ShowCPS.pas na pasta PascalScripts do Subtitle Workshop
rafael farias novaes rfarias
Hits: 7.381 Categoria: Pascal/Kylix Subcategoria: Manipulação de arquivos
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Seguindo a linha de garimpagem do Pix, estou pesquisando na internet alguns scripts pascal que facilitam nossa vida.

Este gera um relatório dizendo se sua legenda está nos "padrões" de 25 caracteres exibidos em 1 segundo (tempo-limite que a maioria das pessoas leva pra ler a legenda). OBS: o padrão oficial para dvd's comerciais e filmes de cinema é de 13 a 18 cps em média.

Salve este código com o nome ShowCPS.pas na pasta PascalScripts do Subtitle Workshop
Download pascal.txt Enviar nova versão

Esconder código-fonte

// Made by Buzcatcher

program ShowCPS;

// ---------------------------------------------

const
  cpsreport = 'C:\cps_report.txt';
  CRLF = ''#13''#10;
  Rsep = ' | ';

var
  i, n, p : Integer;
  duration, sublength, cps : Integer;
  subtxt, report : String;
  Ms : TmemoryStream;

begin
  Ms := TmemoryStream.Create;
  n := GetSubtitleCount-1;

  for i := 0 to n do
  begin
    subtxt := GetSubtitleText(i);
    sublength := length(subtxt);
    
    p := pos(''#13''#10, subtxt);
    if (p>0) then
      sublength := sublength - 2;
               
    duration := GetSubtitleFinalTime(i) - GetSubtitleInitialTime(i);
    cps := round((sublength * 1000)/ duration);
    
  report := IntToStr(i+1) + Rsep + IntToStr(sublength) + ' Characters' + Rsep + IntToStr(duration) + ' duration(ms)' + Rsep + '==> ' + IntToStr(cps) + ' Char/sec.'
  if (cps > 25) then
    report := report + Rsep + 'LEGENDA MUITO RAPIDA'
  report := report + CRLF
  
  
  Ms.Write(report, length(report));
  
  try
        Ms.SaveToFile(cpsreport);
    except
        MsgBox('Couldn''t write to file!', '&Ok', '', '', $20);
    end;

  end;
  Ms.Free;
  MsgBox('Report saved in C:\cps_report.txt', '&Ok', '', '', $20);
end.

Cadastro Empresarial

Funções de Manipulação de Arquivos Pascal

ZCodEdit - Editor de textos com sintaxe HTML e Pascal

Manipulação de arquivos

Equação do segundo grau

#1 Comentário enviado por m4iir1c10 em 26/01/2009 - 02:06h
Legal Rafael, so tem um problema no seu script... creio que voce escreveu ele no ambiente do windows e esqueceu de fazer as modificacoes nescessarias para fazer ele funcionar no Linux...

"Report saved in C:\cps_report.txt" nao seria melhor salvar em ~/ ou $HOME ?
#2 Comentário enviado por ldesignerl em 26/01/2009 - 13:38h
Legal mas como o cara disse.
nao seria melhor salvar em ~/ ou $HOME

vlw
#3 Comentário enviado por metin em 26/01/2009 - 13:39h
^^

Contribuir com comentário

Entre na sua conta para comentar.